Telegram Group & Telegram Channel
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Задача: Что делает эта загадочная функция paradox и почему она называется так?


def paradox(n):
def f(x):
return ((x * x) % n + x) % n

slow = fast = 0
while True:
slow = f(slow)
fast = f(f(fast))
if slow == fast:
return slow

print(paradox(31337))


На первый взгляд — простой цикл с двумя указателями: slow и fast.
Но на деле это алгоритм Флойда ("заяц и черепаха"), используемый для нахождения цикла в псевдослучайной последовательности.

📌 Функция f(x):

Простая квадратичная функция, по сути — генератор псевдослучайных чисел по модулю n.

📌 Что происходит:

slow движется на 1 шаг за итерацию: f(x)

fast — на 2 шага: f(f(x))

Как только slow == fast, цикл найден — значит, последовательность начала повторяться.

🔍 Почему это парадокс?

Потому что вы начинаете с 0, вычисляете кучу якобы "случайных" значений, и внезапно обнаруживаете цикличность в хаосе.

Вы не знаете длину цикла, период или точку входа, но находите пересечение без хранения всей истории.

💡 Эта техника используется в:

криптографии (Pollard's rho для факторизации),

генерации чисел,

распознавании псевдопериодов,

хаотических системах.

🎯 Челлендж для продвинутых:

Измените f(x) на pow(x, 3, n) — как это повлияет на цикл?

Реализуйте поиск начала цикла и длины периода, используя Флойда + Брента.

Придумайте, как использовать это для взлома слабых генераторов случайных чисел.

🧠 Эта задача не просто про числа — она про границу между случайным и детерминированным.
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pythonl/4853
Create:
Last Update:

🖥 Задача: Что делает эта загадочная функция paradox и почему она называется так?


def paradox(n):
def f(x):
return ((x * x) % n + x) % n

slow = fast = 0
while True:
slow = f(slow)
fast = f(f(fast))
if slow == fast:
return slow

print(paradox(31337))


На первый взгляд — простой цикл с двумя указателями: slow и fast.
Но на деле это алгоритм Флойда ("заяц и черепаха"), используемый для нахождения цикла в псевдослучайной последовательности.

📌 Функция f(x):

Простая квадратичная функция, по сути — генератор псевдослучайных чисел по модулю n.

📌 Что происходит:

slow движется на 1 шаг за итерацию: f(x)

fast — на 2 шага: f(f(x))

Как только slow == fast, цикл найден — значит, последовательность начала повторяться.

🔍 Почему это парадокс?

Потому что вы начинаете с 0, вычисляете кучу якобы "случайных" значений, и внезапно обнаруживаете цикличность в хаосе.

Вы не знаете длину цикла, период или точку входа, но находите пересечение без хранения всей истории.

💡 Эта техника используется в:

криптографии (Pollard's rho для факторизации),

генерации чисел,

распознавании псевдопериодов,

хаотических системах.

🎯 Челлендж для продвинутых:

Измените f(x) на pow(x, 3, n) — как это повлияет на цикл?

Реализуйте поиск начала цикла и длины периода, используя Флойда + Брента.

Придумайте, как использовать это для взлома слабых генераторов случайных чисел.

🧠 Эта задача не просто про числа — она про границу между случайным и детерминированным.

BY Python/ django


Share with your friend now:
tg-me.com/pythonl/4853

View MORE
Open in Telegram


Python django Telegram | DID YOU KNOW?

Date: |

What is Telegram?

Telegram’s stand out feature is its encryption scheme that keeps messages and media secure in transit. The scheme is known as MTProto and is based on 256-bit AES encryption, RSA encryption, and Diffie-Hellman key exchange. The result of this complicated and technical-sounding jargon? A messaging service that claims to keep your data safe.Why do we say claims? When dealing with security, you always want to leave room for scrutiny, and a few cryptography experts have criticized the system. Overall, any level of encryption is better than none, but a level of discretion should always be observed with any online connected system, even Telegram.

Python django from es


Telegram Python/ django
FROM USA